package Hw;

import java.util.Random;
import java.util.Scanner;

/*
    【编号：810】
    在登录注册页面中，除了用户名和密码外，通常也会包含验证码。
    验证码是用来区分用户是计算机还是人，防止恶意破解密码、刷票、灌水等行为。
    请查看Random、StringBuilder相关API

    定义方法，获取一个包含4个字符的验证码
    每一位字符是随机选择的字母和数字，可包含a-z,A-Z,0-9。
        例如：
        7Kt5
 */
public class Hw810 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入验证码位数");
        System.out.println("生成验证码为: "+newCode(sc.nextInt()));
    }
    public static String newCode(int num){

        //字符库
        StringBuilder s1 = new StringBuilder();
        for (char c = 'a'; c <= 'z'; c++) {
            s1.append(c);//小写入库
        }
        s1.append(s1.toString().toUpperCase());//大写入库
        for (char c = '0'; c <= '9'; c++) {
            s1.append(c);//数字入库
        }
        //System.out.println(s1.toString());//检验字符库是否符合需求

        //从库中随机抽取,组成验证码
        Random r = new Random();//字符库长度 <-> 随机索引范围
        StringBuilder s2 = new StringBuilder();
        for (int i = 0; i < num; i++) {
            s2.append(s1.charAt(r.nextInt(s1.length())));//字符库中 随机索引位置 字符 加入结果字符串
        }

        //返回生成的验证码字符串
        return s2.toString();
    }
}
